package Tets;

import java.io.File;
import java.io.InputStream;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;

public class Utils {
	/**
	 * 负责返回特殊格式的byte数组的值，读出4个字节的十进制格式
	 * @param a byte数组
	 * @param s 初始下标
	 * @param e 结束下标
	 * @return 返回十进制数的String
	 */
	static public String getValue(byte []a,int s,int e){
		java.text.DecimalFormat df = new java.text.DecimalFormat("########");
		double num=0;
		
		for(int i =s,j=0;i<e;j++,i++){
			num+=(a[i]&0Xff)*Math.pow(256, j);
		}
		if(s>1&&s<24 || s==20){
			num = Math.round((num/10.0));
			if(s==20)
				num = num/10;
		}
		return df.format(num);
	}
	
	public static String getPrwValue(byte[]a,int s){
		java.text.DecimalFormat df = new java.text.DecimalFormat("########");
		double num=0;
		for(int i =s,j=3;i<4;j--,i++){
			num+=(a[i]&0Xff)*Math.pow(256, j);
		}
		return df.format(num);
	}
	
	
	
	/**
	 * 负责返回查找到文件的路径
	 * @param nowFileName 递归的路径，即当前路径
	 * @param objName	    目标文件名
	 * @return 返回目标文件名的路径
	 */
	public static String  FindFile(String nowFileName,String objName){
		File testFile = new File(nowFileName);
		if(testFile.isDirectory()){
			String []fileName = testFile.list();
			for(String s : fileName){
				String temp= FindFile(nowFileName+"/"+s,objName);
				if(!temp.isEmpty()){
					return temp;
				}else
					continue;
			}
		}else{
//			System.out.println(testFile.getName());
//			String s = new String(testFile.getName());
//			String temp[]= s.split(".");
			
			if((nowFileName.indexOf(objName))>-1){
				return nowFileName;
			}
		}
		return null;
	}
	/**
	 * 负责返回读出数据的链表对象
	 * @param in 读入文件的输入流
	 * @return   返回链表
	 * @throws Exception
	 */
	public static List<Model> getlist(InputStream in) throws Exception{
		List<Model> list = new LinkedList<Model>();
		byte []a=new byte[40];
		String []temp=new String[12];
		int counter=0;
		while(in.read(a,0,40)!=-1){
			for(int i=0,j=4;i<40;i=i+j ){
				if(counter==7){
					j=3;
				}
				temp[counter] = Utils.getValue(a, i, i+j);
				counter++;
				if(counter < 8){
					continue;
				}
				else if(counter==11){
					i=38;
					j=1;
				}				
				else if(counter<11){
					j=3;
					if(counter==9){//处理   32-34  34-36
						i=30;
					}
				}
			}
			list.add(new Model(temp));
			counter=0;	
		}
		return list;
	}
	

}
